package tools;

import java.lang.reflect.Array;

import model.liczba.Liczba;
import model.liczba.LiczbaObsluga;

public class Tablice {
	
	@SuppressWarnings("unchecked")
	public static <T> T[][] transponuj(Class<T> clazz, T[][] tablica) {
	    T[][] wynik = (T[][])Array.newInstance(clazz, tablica[0].length, tablica.length);
	
		for (int i = 0; i < tablica[0].length; i++) {
			for (int j = 0; j < tablica.length; j++) {
				wynik[i][j] = (T) tablica[j][i];
			}
		}
		return wynik;
	}
	
	public static Liczba znajdzMin(Liczba[] tablica, LiczbaObsluga lo) {
		Liczba daneMin = lo.create(Double.MAX_VALUE);
		
		for (int i = 0; i < tablica.length; i++) {
			daneMin = lo.min(daneMin, tablica[i]);
		}
		return daneMin;
	}
	
	public static Liczba znajdzMax(Liczba[] tablica, LiczbaObsluga lo) {
		Liczba daneMax = lo.create(Double.MIN_VALUE);
		
		for (int i = 0; i < tablica.length; i++) {
			daneMax = lo.max(daneMax, tablica[i]);
		}
		return daneMax;
	}

}

